Field
Various features relate to methods for securing (scrambling/encrypting) content in memory by using different domain-specific keys for different memory regions.
Background
Memory space in a device or system is typically shared among different applications, functions, and/or devices, which are collectively referred hereto as “domains”. A domain comprises of one or more master (e.g., hardware and/or software block, modules or sub-systems with a specific identity) that generate memory requests. For an allocated memory space, an access control mechanism is typically implemented that controls read/write operations by the different masters in the system. For example, in a system-on-chip (SoC) access control serves to control read/write operations of the various masters resources within the SoC (e.g. Application CPU cannot access the code/data used by an audio sub-system, etc.) to the slave resource (e.g., a memory accessed by various masters). A domain is effectively defined by the access control setting permitting a given set of masters access to the slave resources (memory), and the masters permitted access can be referred to as a master within the domain. The memory is considered to be made up of multiple contiguous regions and each region may be associated with access control properties that grant one or more masters read and/or write access to the memory region. The allocated memory region along with the access control settings for the various masters constitute a “domain” in the system. Changing the access control settings is effectively changing from one domain to another.
Dynamic memory allocation is commonly used by a high-level Operating System (HLOS) to efficiently use the memory regions (e.g., memory pages in a system) to support virtual memory.
In such a system, a memory page may be shared over time between two domains, such as an untrusted domain and trusted domain. When there is a change in ownership (or domain), the domain change for the memory is reflected by changing the access control for the memory region (e.g., memory page).
Additionally, scrambling/encryption may be implemented in memory (e.g., off-chip memory) as a security feature to protect content stored in memory. Scrambling protects the memory contents from physical attacks such as probing the signals/interface lines and interposer boards. Further enhancements can be achieved to protect from physical attacks (e.g., glitching the memory interface lines). The scrambling functionality is typically performed in the memory controller (e.g., a memory controller within a SoC). A global random key is typically set-up during the boot-up and used for scrambling the contents written to memory and de-scrambling them when the contents are read out from memory. The scrambling logic is typically dependent on the address of the memory location (e.g., the same data written to different addresses are encrypted differently). Current approaches to security use the same global random key to secure content stored in all memory regions. Additionally, access control and content security (scrambling/encryption) are separate and distinct functions.
A first security risk occurs when access control changes for a memory region (e.g., set of pages) when the memory is allocated to a different domain. To prevent a master (e.g., untrusted master) in the new domain from gaining access to content stored by a previous domain-master (e.g., trusted master) in the reallocated memory region, the reallocated memory region is often cleared, overwritten (e.g., with known/random values), or scrambled when access changes from the previous master to the new master. This consumes both time and energy and is an expensive operation.
A second security risk is also possible where the same physical memory can be accessed by different masters (over time), giving an untrusted master (i.e., hacker) an opportunity to build tables (e.g., known patterns) that can be exploited for the same memory regions. For instance, because the untrusted master (hacker) has access to the clear (unencrypted) and encrypted data for specific memory addresses, it can build the tables (e.g., using known instructions, patterns, etc.) that map between encrypted and unencrypted content. With that information, these mapping tables can assist in successful glitching attacks on a memory region when a different master has access control to that memory region.
A third security risk exists where encryption keys may be generated by software that is susceptible to attackers.
A fourth security risk may also exist where, even if a memory controller is reset, data may not be cleared from memory regions. Therefore such data is accessible by unauthorized entities. This typically occurs, as resetting the memory controller resets the access control, and the default access control settings permit access to all masters in the system. Such reset attacks compromise the system security.
Consequently, a solution is needed that mitigates or prevents unauthorized access to content in allocated and/or shared memory regions.